001 /** 002 * Java Gui Builder - A library to build GUIs using an XML file. 003 * Copyright 2002, 2003 (C) François Beausoleil 004 * 005 * This library is free software; you can redistribute it and/or 006 * modify it under the terms of the GNU Lesser General Public 007 * License as published by the Free Software Foundation; either 008 * version 2.1 of the License, or (at your option) any later version. 009 * 010 * This library is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 013 * Lesser General Public License for more details. 014 * 015 * You should have received a copy of the GNU Lesser General Public 016 * License along with this library; if not, write to the Free Software 017 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 018 */ 019 020 package jgb.builder.utils; 021 022 import java.util.Stack; 023 024 /** 025 * @since 0.2.1a 026 * @author Francois Beausoleil, <a href="mailto:fbos@users.sourceforge.net">fbos@users.sourceforge.net</a> 027 */ 028 public class CurrentObjectsStackManager { 029 private Stack stack = new Stack(); 030 031 public void pushCurrentObject(Object o) { 032 pushCurrentObject(o, null); 033 } 034 035 public void pushCurrentObject(Object o, String id) { 036 CurrentObject co = new CurrentObject(o, id); 037 stack.push(co); 038 } 039 040 public void popCurrentObject() { 041 stack.pop(); 042 } 043 044 public Object getCurrentObject() { 045 if (isCurrentObjectValid()) { 046 return ((CurrentObject)stack.peek()).getObject(); 047 } else { 048 return null; 049 } 050 } 051 052 public String getCurrentObjectId() { 053 if (isCurrentObjectValid()) { 054 return ((CurrentObject)stack.peek()).getObjectId(); 055 } else { 056 return null; 057 } 058 } 059 060 public boolean isCurrentObjectValid() { 061 return !stack.isEmpty(); 062 } 063 064 public int size() { 065 return stack.size(); 066 } 067 068 public String toString() { 069 return this.getClass().getName() + " [" + stack.toString() + "]"; 070 } 071 072 private static class CurrentObject { 073 private Object object; 074 private String objectId; 075 076 public CurrentObject(Object object, String objectId) { 077 this.object = object; 078 this.objectId = objectId; 079 } 080 081 public Object getObject() { 082 return object; 083 } 084 085 public String getObjectId() { 086 return objectId; 087 } 088 } 089 }